﻿#pragma once

#include <QThread>
#include <QDir>
#include <QFileInfoList>
#include <QReadWriteLock>
#include <QQueue>

/************************************************************************/
/* 文件夹读取线程:此线程负责从文件夹中获取CSV文件到put进入文件单行读取线程*/
/************************************************************************/

class DirReadThread : public QThread
{
	Q_OBJECT

public:
	DirReadThread(QObject *parent);
	~DirReadThread();
	void PutDirToDeal(const QString strDirPath);
private:
	virtual void run();
	//处理一个文件夹
	void DealOneDir(const QString strDirName);
	QString m_strRootDir;
	QQueue<QString> m_QueueNeedDealDir;

	QReadWriteLock m_DirReadWriteLock;
	bool GetOneDirToDeal(QString &strDir);
	void PutOneDirToDeal(const QString &strDir);

private:
	//文件读取线程管理
	QQueue<QString> m_QueueNeedDealFile;
	QReadWriteLock m_FileReadWriteLock;
	bool GetOneFileToDeal(QString &strFile);
	void PutOneFileToDeal(const QString &strFile);
	//线程数目管理
	unsigned int m_CurThreadCnt;

};
